package sweetguy.service;

import com.github.pagehelper.PageInfo;
import sweetguy.dto.EmpInsertDTO;
import sweetguy.dto.EmpUpdateDTO;
import sweetguy.dto.LoginDTO;
import sweetguy.dto.PageDTO;
import sweetguy.entity.dto.Emp;
import sweetguy.vo.LoginVO;

import java.util.List;

public interface EmpService {
    /**
     * 添加一条员工记录
     *
     * @param dto 员工添加实体
     * @return 影响条目数
     */
    int insert(EmpInsertDTO dto);

    /**
     * 按主键查一条员工记录
     *
     * @param id 员工表主键
     * @return 一条员工记录
     */
    Emp selectById(Long id);

    /**
     * 按主键修改一条员工记录
     *
     * @param dto 员工修改实体
     * @return 影响条目数
     */
    int updateById(EmpUpdateDTO dto);

    /**
     * 按主键逻辑删除一条员工记录
     *
     * @param id 员工表主键
     * @return 影响条目数
     */
    int logicDeleteById(Long id);

    /**
     * 按主键列表逻辑删除多条员工记录
     *
     * @param ids 员工表主键列表
     * @return 影响条目数
     */
    int logicDeleteByIds(List<Long> ids);

    /**
     * 查询全部记录
     *
     * @return 全部记录
     */
    List<Emp> list();

    /**
     * 分页查询数据
     *
     * @param dto 分页实体类
     * @return 分页数据
     */
    PageInfo<Emp> page(PageDTO dto);

    /**
     * 按账号密码登录
     * @param loginDTO 登录DTO
     * @return 登录VO，包含Token和员工权限列表
     */
    LoginVO loginByAccount(LoginDTO loginDTO);
}
